/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Controlador;

import Modelo.Cliente;
import Modelo.ClienteModelo;
import java.util.Iterator;
import java.util.LinkedList;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import java.sql.SQLException;


public class ControlCliente {

    ClienteModelo mod= new ClienteModelo();
    LinkedList lista;
    DefaultTableModel tablaModelo;
    private Cliente clie= new Cliente();

    /**
     * Constructor del Cliente
     * @param mod
     */
    public ControlCliente(){
      
        lista=new LinkedList();
        tablaModelo=new DefaultTableModel();
    }

    /**metodo para enviar una tabla y reciva una tabla
     * utilizo 2 parametros la tabla y la consulta, si la consulta es vacia
     * trae todos los datos
     * @param tabla
     * @param consulta
     * @param tipo
     * @return
     */
  public JTable cargaClienteTabla(JTable tabla,String consulta,int tipo){                                                           
        cleanTabla(tabla);
        tablaModelo=(DefaultTableModel) tabla.getModel();
	try
	{
            lista=mod.consultaClientesTabla(consulta,tipo);
            Iterator it=lista.iterator();
            while( it.hasNext() )
            {
                clie=(Cliente)it.next();
                tablaModelo.addRow
                (
                    new Object[]
                    {
                  //      clie.getCodigo(),clie.getCedula(),clie.getNombre(),clie.getApellido(),clie.getEstablecimiento(),clie.getDireccion(),clie.getTelefono(),estado
                            clie.getCodigo(),clie.getCedula(),clie.getNombre(),clie.getApellido(),clie.getEstablecimiento(),clie.getDireccion(),clie.getTelefono(),clie.getEstado()
                    }
                );
            }
            tablaModelo.addRow(new Object[]{});
     //       JOptionPane.showMessageDialog(null,"probando");
	}catch(Exception er){
		JOptionPane.showMessageDialog(null, "Error al cargar la lista de Cliente de la base de datos, se presento " +
                        "\n un inconveniente al tratar de Buscar la informacion requerida " +
                        "\n por el sistema." +
                        "\n."+er.toString() , "Error en la Carga de Informacion...",JOptionPane.DEFAULT_OPTION);
	}
        return tabla;
    }
//buscar informacion de las linkedlist control de la informacion y hasNext

  /**
   * limpia la tabla
   * @param tabla
   * @return
   */
  public JTable cleanTabla(JTable tabla){
        tablaModelo=(DefaultTableModel) tabla.getModel();
        int x=tablaModelo.getRowCount();
	for(int i=-1;i<(x-1);i++)
		tablaModelo.removeRow(0);
        return tabla;
  }

/**
 * consulta cliente por codigo
 * @param codigo
 * @return String[]
 * @throws SQLException
 */
  public Cliente consultaClienteCodigo(String consulta) throws SQLException{
      Cliente cliente=new Cliente();
      cliente=mod.consultaClienteCodigo(consulta);
      return cliente;
  }

 /**
 * consulta cliente por cedula
 * @param codigo
 * @return String[]
 * @throws SQLException
 */
  public Cliente consultaClienteCedula(String consulta) throws SQLException{
      Cliente cliente=new Cliente();
      cliente=mod.consultaClienteCedula(consulta);
      return cliente;
  }

  /**
  * insertar datos a la base de datos
  * @param Object clie
  * @throws SQLException
  */
 public void setNuevoCliente(Cliente clie) throws SQLException {//
        mod.setNuevoCliente(clie);
    }

  /**
  * Actualizar, consulta cedula o codigo y dato es el valor a cambiar
  * @param Object cliente, String consulta
  */
  public void actualizarCliente(Cliente clie,String consulta) throws SQLException   {// insertar datos a la base de datos
        mod.actualizarCliente(clie, consulta);
    }

  /**
 * consulta existencia cliente por cedula
 * @param codigo
 * @return boolean
 * @throws SQLException
 */
  public boolean isExistCedula(String consulta) throws SQLException{
      Cliente cliente=new Cliente();
      cliente=mod.consultaClienteCedula(consulta);

      if(cliente.getCodigo()!=null)
          return true;

      return false;
  }

/**
 * consulta existencia cliente por codigo
 * @param codigo
 * @return String[]
 * @throws SQLException
 */
  public boolean isExistCodigo(String consulta) throws SQLException{
      Cliente cliente=new Cliente();
      cliente=mod.consultaClienteCodigo(consulta);

      if(cliente.getCodigo()!=null)
          return true;

      return false;
  }
}
